path = './';
addpath(genpath(path));

% 设置结果保存路径
ResSavePath = './dataset/';
if ~exist(ResSavePath, 'file')
    mkdir(ResSavePath);
    addpath(genpath(ResSavePath));
end

% 数据集名称，可以添加多个
datasetName = {'ALOI-100'};

for dataIndex = 1 : length(datasetName)
    dataName = datasetName{dataIndex};
    % 加载原始数据集，假设包含X和Y
    load(['./dataset/', dataName, '.mat'], 'X', 'Y');
    
    % 设置随机数种子，保证结果可重复
    rand('twister', 5489);
    
    % 获取视图数量和样本数量
    view_num = length(X);
    smp_num = size(X{1}, 2);
    
    % 存储每个视图的随机索引（第一个视图不打乱）
    randIndex = zeros(view_num, smp_num);
    
    % 第一个视图保持不变，从第二个视图开始打乱
    for iv = 2 : view_num
        % 生成随机索引
        randIndex(iv, :) = randperm(smp_num);
        X{iv} = X{iv}(:, randIndex(iv, :));
    end
    
    % 保存打乱后的数据集
    save([ResSavePath, dataName, '_shuffled.mat'], 'X', 'Y', 'randIndex');
    fprintf('已保存打乱后的数据集: %s\n', [dataName, '_shuffled.mat']);
end